Field of the Invention
The present invention relates generally to programming techniques in the hypertext markup language (“HTML”). More particularly, the present invention relates to a system and method for providing dynamic Web pages by separating scripts and HTML code.
Identification of Copyright
A portion of the disclosure of this patent document contains material subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
Relevant Technology
The World Wide Web (hereinafter “the Web”) is a collection of Internet-accessible servers from which specially formatted documents may be retrieved and displayed by Web browsers, such as Netscape Navigator™ and Microsoft Internet Explorer™. Currently, the hypertext markup language (“HTML”) is the most common authoring language for creating Web documents, also known as “Web pages.” A Web page is identified by a uniform resource locator (“URL”), which is used by a Web browser to locate and display a particular Web page.
Until recently, most Web pages were static, i.e. the content of a Web page was the same each time it was displayed. As a result, to produce customized content for different users, for example, different Web pages (with different URLs) were created in advance for each user. Such an approach has obvious shortcomings, however, since a Web server would need to store millions of different Web pages for millions of different users.
Consequently, techniques were developed to make Web pages dynamic, i.e. the content of a single Web page may change each time it is viewed. A different Web page may be displayed depending, for example, on the identity of the reader, the geography of the reader, the time of day, previous pages viewed by the reader, and the like.
For instance, a user may retrieve a Web page containing her bank account balance. However, the bank does not typically store individual “account balance” pages for each user. Instead, user-specific information is retrieved from the bank's database and dynamically inserted into a Web page template, after which the resulting Web page is sent to the user's Web browser.
Conventionally, dynamic Web pages are created by embedding server-side scripts in Web pages, which execute on a Web server and generate HTML elements prior to the Web page being sent to a browser. A variety of technologies exist for producing dynamic HTML pages, including common gateway interface (“CGI”) scripts, active server pages (“ASP”), server-side includes (“SSI”), cookies, Java, JavaScript, and ActiveX.
Unfortunately, embedding server-side scripts within Web pages has at least two major drawbacks that have plagued Web page developers and HTML programmers. First, a Web page including embedded scripts cannot be effectively edited with an interactive HTML editor, because some of the HTML elements of the page are only generated by the scripts at run time, and are thus unknown to the editor at design time.
Second, Web documents including embedded scripts are often difficult to maintain and debug since the scripts are typically scattered throughout a Web page at various locations at which corresponding HTML elements are to be inserted by a Web server. This fact also makes it difficult to provide a high-level integrated development environment (“IDE”) for script writers and programmers.
The above-described problems are more fully illustrated by the following example. A user may wish to update her personal information on an e-commerce site, such as Amazon.com™. Accordingly, she may request a dynamic Web page adapted for that purpose by clicking on a corresponding button displayed by her Web browser.
FIG. 1 depicts a conventional dynamic Web page 2 for updating a user's personal information. As illustrated, the Web page 2 includes a number of embedded scripts 4. The Web page 2 may be an active server page (“ASP”), as shown, although other technologies could be used.
In general, the embedded scripts 4 are unintelligible to Web browsers and HTML editors. As such, if the Web page 2 of FIG. 1 is displayed by a standard Web browser or HTML editor, the scripts will be ignored, and a displayed page 2 similar to that of FIG. 2 will result.
Conventionally, the Web server handling the request modifies the Web page 2 by replacing the scripts 4 of FIG. 1 with the output of the script execution (e.g., the Write( ) arguments). Typically, the output includes one of more HTML elements 6, as illustrated in FIG. 3. Thereafter, a “modifies” Web page 8 may be sent to the requesting Web browser.
For instance, the Web server may replace the script 4A of FIG. 1, i.e. <% Response.Write(“<input name=‘name’ value=‘” & rs(“name”) & “’>”) %>, with the HTML element 6A of FIG. 3, i.e. <input name=‘name’value=‘Jane Doe’>. The rs (“name”) argument is a database query that returns, for example, the user's name, i.e. “Jane Doe.”
The modified Web page 8, as displayed by a Web browser, is shown in FIG. 4. As a result of the above-described process, a single requested Web page 2 may produce customized output for different users. In other words, the Web page 2 is “dynamic.”
Unfortunately, conventional dynamic Web pages 2 of the type illustrated in FIG. 1 have numerous drawbacks. As previously noted, a Web page 2 including embedded scripts 4 cannot be effectively edited by an HTML editor, because some HTML elements 6 do not exist until after the scripts 4 are executed, and are thus not available to the HTML editor at design time.
For example, the HTML element 6A, i.e. <input name=‘name’value=‘Jane Doe’>, does not exist in the Web page 2 of FIG. 1. The element 6A is not added until after the Web server executes the script 4A. As a result, a Web designer is limited to the displaying and editing the incomplete Web page 2 of FIG. 2, rather than the completed Web page 2 of FIG. 4. Designing and laying out a Web page 2 is understandably difficult when some of the HTML elements 6 are not available at design time.
Moreover, debugging and maintaining conventional dynamic Web pages 2 are difficult, since individual scripts 4 are scattered throughout the pages 2 at various locations dictated by the insertion points of corresponding HTML elements 6. For instance, the Web page 2 of FIG. 1 includes three different scripts 4A–C at three different locations. Larger Web pages 2 may include hundreds of scripts. The lack of a single location in which a Web designer may look to find all of the embedded scripts 4 is a serious problem in Web page development.
Accordingly, what is needed is a system and method for providing dynamic Web pages. What is also needed is a system and method for providing dynamic Web pages that may be edited by an interactive HTML editor. What is also needed is a system and method for providing dynamic Web pages by separating scripts and HTML code.